#pragma once

using namespace System;

namespace SmartMathLibrary
{
  namespace FFTPack
  {
    public ref class ManagedFFTProvider
    {
      public:
        static void Drfti1(int n, float *wa, int *ifac);
        static void Ogg_fdrffti(int n, float *wsave, int *ifac);
        static void Ogg_fdcosqi(int n, float *wsave, int *ifac);
        static void Dradf2(int ido, int l1, float *cc, float *ch, float *wa1);
        static void Dradf4(int ido, int l1, float *cc, float *ch, float *wa1,
          float *wa2, float *wa3);
        static void Dradfg(int ido, int ip, int l1, int idl1, float *cc, float
          *c1, float *c2, float *ch, float *ch2, float *wa);
        static void Drftf1(int n, float *c, float *ch, float *wa, int *ifac);
        static void Ogg_fdrfftf(int n, float *r, float *wsave, int *ifac);
        static void Dcsqf1(int n, float *x, float *w, float *xh, int *ifac);
        void Ogg_fdcosqf(int n, float *x, float *wsave, int *ifac);
        static void Dradb2(int ido, int l1, float *cc, float *ch, float *wa1);
        static void Dradb3(int ido, int l1, float *cc, float *ch, float *wa1,
          float *wa2);
        static void Dradb4(int ido, int l1, float *cc, float *ch, float *wa1,
          float *wa2, float *wa3);
        static void Dradbg(int ido, int ip, int l1, int idl1, float *cc, float
          *c1, float *c2, float *ch, float *ch2, float *wa);
        static void Drftb1(int n, float *c, float *ch, float *wa, int *ifac);
        static void Ogg_fdrfftb(int n, float *r, float *wsave, int *ifac);
        static void Dcsqb1(int n, float *x, float *w, float *xh, int *ifac);
        static void Ogg_fdcosqb(int n, float *x, float *wsave, int *ifac);

    };
  }
}
